package com.xydtech.ecard.ftp.domain;

import java.math.BigDecimal;

/**
 * @Author: liliya
 * @Description: "sheet-等额本息/本金"的汇总对象
 * @Date: Created in 2023/8/25 11:14
 * @Modified:
 */

public class EcardFtpAverageCapitalPlusInterestSummaryBO {

    /**
     * 业务品种(贷款:1,定期存款2,个人活期3,单位活期4)
     * (自定义添加)
     */
    private Integer ftpBusinessVariety;
    /**
     * 现金流/业务起始日(直接取业务起始日)
     * (自定义添加)
     */
    private String cashFlowStartDate;
    /**
     * 现金流/业务到期日(直接取业务到期日)
     */
    private String cashFlowMaturityDate;
    /**
     * 还款频率(1,3,6,12)
     */
    private Integer repaymentFrequency;
    /**
     * 利率类型(固定:1,浮动:2)
     */
    private Integer interestRateType;
    /**
     * 重定价频率(月)(3,6,12)
     * TODO 固定利率贷款和存款不填此项
     * TODO 固定利率无重定价频率
     * TODO 浮动利率需有重定价频率
     */
    private Integer repricingFrequencyType;
    /**
     * 结息频率(月)(1,3)
     */
    private Integer interestFrequencyType;

    /**
     * 还款方式
     * TODO 存款不填此项
     * 到期还本付息	    1	loan_repayment_mode_type
     * 到期还本定期结息	2	loan_repayment_mode_type
     * 等额本金	        3	loan_repayment_mode_type
     * 等额本息	        4	loan_repayment_mode_type
     * 按还款计划还款	5	loan_repayment_mode_type
     */
    private Integer loanRepaymentModeType;

    /**
     * 重定价到期日(业务起始日+重定价频率,再次日期处理)
     */
    private String repricingDueDate;
    /**
     * 还款次数(业务日期总条数-1(第一条未处理的))
     */
    private Integer repaymentTimes;
    /**
     * 本金(业务金额)
     */
    private BigDecimal principal;
    /**
     * 利率(对客利率(年利率))
     */
    private BigDecimal rate;
    /**
     * 每期还款额
     */
    private BigDecimal repaymentAmount;
    /**
     * 现金流*期限(求和)
     */
    private BigDecimal calculateVal01;
    /**
     * 现金流*期限*利率(求和)
     */
    private BigDecimal calculateVal02;
    /**
     * 基础价格(calculateVal02/calculateVal01,4)
     */
    private BigDecimal basicPrice;
    /**
     * 余额累计(求和)
     */
    private BigDecimal balanceAccumulation;
    /**
     * 计算实际相关字段的总条数
     * (自定义添加)
     */
    private Integer actualTotalNum;

    /**
     * 计算非实际相关字段的总条数
     * (自定义添加)
     */
    private Integer totalNum;
    /**
     * 计算利率的次方值
     * (自定义添加)
     */
    private Integer actualPowNum;
    /**
     * 业务日期第一个
     * (自定义添加)
     */
    private String businessBeginDate;
    /**
     * 业务日期最后一个
     * (自定义添加)
     */
    private String businessEndDate;
    /**
     * 定价日期第一个
     * (自定义添加)
     */
    private String pricingBeginDate;
    /**
     * 定价日期最后一个
     * (自定义添加)
     */
    private String pricingEndDate;

    public Integer getFtpBusinessVariety() {
        return ftpBusinessVariety;
    }

    public void setFtpBusinessVariety(Integer ftpBusinessVariety) {
        this.ftpBusinessVariety = ftpBusinessVariety;
    }

    public String getCashFlowStartDate() {
        return cashFlowStartDate;
    }

    public void setCashFlowStartDate(String cashFlowStartDate) {
        this.cashFlowStartDate = cashFlowStartDate;
    }

    public String getCashFlowMaturityDate() {
        return cashFlowMaturityDate;
    }

    public void setCashFlowMaturityDate(String cashFlowMaturityDate) {
        this.cashFlowMaturityDate = cashFlowMaturityDate;
    }

    public Integer getRepaymentFrequency() {
        return repaymentFrequency;
    }

    public void setRepaymentFrequency(Integer repaymentFrequency) {
        this.repaymentFrequency = repaymentFrequency;
    }

    public Integer getInterestRateType() {
        return interestRateType;
    }

    public void setInterestRateType(Integer interestRateType) {
        this.interestRateType = interestRateType;
    }

    public Integer getRepricingFrequencyType() {
        return repricingFrequencyType;
    }

    public void setRepricingFrequencyType(Integer repricingFrequencyType) {
        this.repricingFrequencyType = repricingFrequencyType;
    }

    public Integer getInterestFrequencyType() {
        return interestFrequencyType;
    }

    public void setInterestFrequencyType(Integer interestFrequencyType) {
        this.interestFrequencyType = interestFrequencyType;
    }

    public Integer getLoanRepaymentModeType() {
        return loanRepaymentModeType;
    }

    public void setLoanRepaymentModeType(Integer loanRepaymentModeType) {
        this.loanRepaymentModeType = loanRepaymentModeType;
    }

    public String getRepricingDueDate() {
        return repricingDueDate;
    }

    public void setRepricingDueDate(String repricingDueDate) {
        this.repricingDueDate = repricingDueDate;
    }

    public Integer getRepaymentTimes() {
        return repaymentTimes;
    }

    public void setRepaymentTimes(Integer repaymentTimes) {
        this.repaymentTimes = repaymentTimes;
    }

    public BigDecimal getPrincipal() {
        return principal;
    }

    public void setPrincipal(BigDecimal principal) {
        this.principal = principal;
    }

    public BigDecimal getRate() {
        return rate;
    }

    public void setRate(BigDecimal rate) {
        this.rate = rate;
    }

    public BigDecimal getRepaymentAmount() {
        return repaymentAmount;
    }

    public void setRepaymentAmount(BigDecimal repaymentAmount) {
        this.repaymentAmount = repaymentAmount;
    }

    public BigDecimal getCalculateVal01() {
        return calculateVal01;
    }

    public void setCalculateVal01(BigDecimal calculateVal01) {
        this.calculateVal01 = calculateVal01;
    }

    public BigDecimal getCalculateVal02() {
        return calculateVal02;
    }

    public void setCalculateVal02(BigDecimal calculateVal02) {
        this.calculateVal02 = calculateVal02;
    }

    public BigDecimal getBasicPrice() {
        return basicPrice;
    }

    public void setBasicPrice(BigDecimal basicPrice) {
        this.basicPrice = basicPrice;
    }

    public BigDecimal getBalanceAccumulation() {
        return balanceAccumulation;
    }

    public void setBalanceAccumulation(BigDecimal balanceAccumulation) {
        this.balanceAccumulation = balanceAccumulation;
    }

    public Integer getActualTotalNum() {
        return actualTotalNum;
    }

    public void setActualTotalNum(Integer actualTotalNum) {
        this.actualTotalNum = actualTotalNum;
    }

    public Integer getTotalNum() {
        return totalNum;
    }

    public void setTotalNum(Integer totalNum) {
        this.totalNum = totalNum;
    }

    public Integer getActualPowNum() {
        return actualPowNum;
    }

    public void setActualPowNum(Integer actualPowNum) {
        this.actualPowNum = actualPowNum;
    }

    public String getBusinessBeginDate() {
        return businessBeginDate;
    }

    public void setBusinessBeginDate(String businessBeginDate) {
        this.businessBeginDate = businessBeginDate;
    }

    public String getBusinessEndDate() {
        return businessEndDate;
    }

    public void setBusinessEndDate(String businessEndDate) {
        this.businessEndDate = businessEndDate;
    }

    public String getPricingBeginDate() {
        return pricingBeginDate;
    }

    public void setPricingBeginDate(String pricingBeginDate) {
        this.pricingBeginDate = pricingBeginDate;
    }

    public String getPricingEndDate() {
        return pricingEndDate;
    }

    public void setPricingEndDate(String pricingEndDate) {
        this.pricingEndDate = pricingEndDate;
    }


    @Override
    public String toString() {
        return "EcardFtpAverageCapitalPlusInterestSummaryBO{" +
                "ftpBusinessVariety业务品种=" + ftpBusinessVariety +
                ", cashFlowStartDate现金流/业务起始日='" + cashFlowStartDate + '\'' +
                ", cashFlowMaturityDate现金流/业务到期日='" + cashFlowMaturityDate + '\'' +
                ", repaymentFrequency还款频率=" + repaymentFrequency +
                ", interestRateType利率类型=" + interestRateType +
                ", repricingFrequencyType重定价频率(月)=" + repricingFrequencyType +
                ", interestFrequencyType结息频率(月)=" + interestFrequencyType +
                ", loanRepaymentModeType还款方式=" + loanRepaymentModeType +
                ", repricingDueDate重定价到期日='" + repricingDueDate + '\'' +
                ", repaymentTimes还款次数=" + repaymentTimes +
                ", principal本金(业务金额)=" + principal +
                ", rate利率(对客利率(年利率))=" + rate +
                ", repaymentAmount每期还款额=" + repaymentAmount +
                ", calculateVal01现金流*期限(求和)=" + calculateVal01 +
                ", calculateVal02现金流*期限*利率(求和)=" + calculateVal02 +
                ", basicPrice基础价格(calculateVal02/calculateVal01,4)=" + basicPrice +
                ", balanceAccumulation余额累计(求和)=" + balanceAccumulation +
                ", actualTotalNum计算实际相关字段的总条数=" + actualTotalNum +
                ", totalNum计算重定价相关字段的总条数=" + totalNum +
                ", actualPowNum计算利率的次方值=" + actualPowNum +
                ", businessBeginDate业务日期第一个='" + businessBeginDate + '\'' +
                ", businessEndDate业务日期最后一个='" + businessEndDate + '\'' +
                ", pricingBeginDate定价日期第一个='" + pricingBeginDate + '\'' +
                ", pricingEndDate定价日期最后一个='" + pricingEndDate + '\'' +
                '}';
    }

}
